// 云函数入口文件
const cloud = require('wx-server-sdk')

cloud.init({ env: cloud.DYNAMIC_CURRENT_ENV }) // 使用当前云环境

// 云函数入口函数
// exports.main = async (event) => {
//     const { recordId, item} = event;
//     const db = cloud.database();
  
//     try {
//       // 开启事务（确保操作原子性）
//       const transaction = await db.startTransaction();
  
//       try {
//         // 更新库存
//         // await transaction.collection('items').doc(itemId).update({
//         //   data: {
//         //     quantity: newQuantity, // 更新库存数量
//         //   },
//         // });

//         try {
//             const updatedItems = [];
      
//             for (let recordItem of item) {
//               const { materialNumber, quantity } = recordItem;
      
//               // 查询该物料的信息
//               const itemRes = await transaction.collection('items')
//                 .where({ materialNumber })
//                 .get();
      
//               if (!itemRes.data || itemRes.data.length === 0) {
//                 throw new Error(`未找到物料编号为 ${materialNumber} 的物品`);
//               }
      
//               const item1 = itemRes.data[0];
//               const newQuantity = item1.quantity + quantity; // 更新库存
      
//               // 更新库存
//               await transaction.collection('items').doc(item1._id).update({
//                 data: {
//                   quantity: newQuantity,
//                 },
//               });
      
//               updatedItems.push({
//                 ...item,
//                 newQuantity: newQuantity
//               });
//             }
      
//             // 提交事务
//             //await transaction.commit();
//             await transaction.collection('records').doc(recordId).remove();

//             return {
//               success: true,
//               message: '更新成功',
//               updatedItems: updatedItems
//             };
//           } catch (err) {
//             // 回滚事务
//             await transaction.rollback();
//             throw err;
//           }

//         //更新库存
  
//         // 删除记录
        
  
//         // 提交事务
//         await transaction.commit();
//         return { success: true };
//       } catch (err) {
//         // 回滚事务
//         await transaction.rollback();
//         throw err;
//       }
//     } catch (err) {
//       console.error('Error updating stock and deleting record:', err);
//       return { success: false, error: err.message };
//     }
//   };



exports.main = async (event) => {
    const { recordId, item } = event;
    const db = cloud.database();

    try {
        // 开启事务（确保操作原子性）
        const transaction = await db.startTransaction();

        try {
            const updatedItems = [];

            for (let recordItem of item) {
                const { materialNumber, quantity } = recordItem;

                // 查询该物料的信息
                const itemRes = await transaction.collection('items')
                    .where({ materialNumber })
                    .get();

                if (!itemRes.data || itemRes.data.length === 0) {
                    throw new Error(`未找到物料编号为 ${materialNumber} 的物品`);
                }

                const item1 = itemRes.data[0];
                const newQuantity = item1.quantity + quantity; // 更新库存

                // 更新库存
                await transaction.collection('items').doc(item1._id).update({
                    data: {
                        quantity: newQuantity,
                    },
                });

                updatedItems.push({
                    ...recordItem,
                    newQuantity: newQuantity
                });
            }

            // 更新records里的领料单记录状态为"待处理"
            await transaction.collection('records').doc(recordId).update({
                data: {
                    status: 'pending', // 设置新的状态为"待处理"
                },
            });

            // 提交事务
            await transaction.commit();

            return {
                success: true,
                message: '更新成功',
                updatedItems: updatedItems
            };
        } catch (err) {
            // 回滚事务
            await transaction.rollback();
            throw err;
        }
    } catch (err) {
        console.error('Error updating stock and deleting record:', err);
        return { success: false, error: err.message };
    }
};